# coding:utf-8
# 王一舟
# varRender.py


#全局变量的变量渲染
#字符串模板进行参数渲染
#使用jinjia2模板引擎(类似flask的模板)

#作用:用于整合所有请求参数,减少业务层的代码量,不再需要业务层中每次都从全局变量中拿参数,当存在多个提取参数的时候可以节省代码量,为实现统一管理参数数据做铺垫

from jinja2 import Template
import json

def refresh(target,context):
    '''
    把初始数据中需要渲染的数据变成context的值
    :param target:初始数据,用{{变量名}}表示 -- 以一个字典的格式传入请求数据
    :param context:初始数据渲染值         --  传如全局变量 就是 g_Context().show_dict()
    :return:
    '''
    if target is None: return None
    return eval(Template(str(target)).render(context)) #由于渲染后返回的是一个字符串,所以用eval把它变回字典




# if __name__ == '__main__':
#
#     url_goods = f'http://shop-xo.hctestedu.com/?s=api/cart/save'
#     param_goods = {
#         "token":  "{{token}}",
#         "application": "app",
#         "application_client_type": "weixin",
#     }
#     headers = {"content-Type": "application/json"}
#     # 商品规格
#     data_goodis = {
#         "goods_id": "9",
#         "spec": [{"type": "颜色", "value": "粉色"}, {"type": "尺码", "value": "L"}],
#         "stock": "2"
#     }
#     data_goodis = json.dumps(data_goodis)

    # g_c = {"token":1231313131}

    # request_data = {"url":url_goods,"params":param_goods,"headers":headers,"data":data_goodis}
    #
    # print(str(request_data))
    #
    # K = refresh(request_data,g_c)
    # print(type(K))
    #
    # token= K.get("params").get("token")
    # print(token)
    # print(type(token))